WEB の必須知識について

はじめに

Web アプリケーションを開発する上で、自分が今どこの機能を構築しているのか、この機能を実装することで何が起きるのか、どういう仕組みで機能が動作するのか、をしっかり理解していることはとても重要です。

昨今は便利なフレームワークが多く開発され、Web アプリケーションの知識や理解が浅い状態でもそれなりにコードを書けてしまうし、アプリケーションを作れてしまいます。特にプログラミング初学者の場合、プログラミングの勉強だけにフォーカスしてしまい、Web や Web アプリケーションについて網羅的に学ぶことを疎かにしてしまいがちだと思います。

知っているかどうかで理解の質が変わってくる基本的な Web、Web アプリケーションの知識を『プロになるための Web 技術入門』という本を参考に解説していきたいと思います。

インターネットとは

複数のコンピュータを繋ぎ、互いにやり取りできるようにした仕組みをネットワークと呼びます。ネットワークをさらに別のネットワークに繋ぎ、結果的に世界中の情報機器が接続され、世界規模でお互いに情報のやり取りができるようになったネットワークをインターネットと呼びます。

Web とは

World-Wide-Web(ワールドワイドウェブ)は略して WWW や Web と呼ばれ、インターネット上の様々な情報の閲覧を可能にするシステムのことを指します。Web が画期的だったのは、ハイパーテキストという仕組みを構築したことです。

ハイパーテキスト形式では記述された文章に別の文章を埋め込むことができる、ハイパーリンクという仕組みで瞬時に参照先の文章を閲覧することが可能になりました。

このようにネットワーク上でリンクされたハイパーリンクの繋がりが、蜘蛛の巣のように見えることから World-Wide-Web と名付けられました。

Web システムの根幹

Web を理解する上で基本となるのが、「Web サーバ」と「Web クライアント」の関係です。

例えば、我々が YouTube の動画をクリックした時、自分のパソコンから動画を蓄積しているコンピュータに動画表示してくださいと要求が行きます。その要求に従って、コンピュータから我々のパソコンに動画が表示されます。

この時、動画を要求している我々が「Web クライアント」で、要求に応えるコンピュータが「Web サーバ」となります。また、クライアントからサーバに対する要求を「リクエスト」、サーバからクライアントへの応答を「レスポンス」と呼びます。

URL

WWW が発展することにより多くの情報がインターネット上に公開されるようになりました。その中から情報を取得する場合、具体的かつ明確にその情報について指定をしてくれないと Web サーバは情報を見つけることができません。

例えば、みどりの窓口で東北に行く切符をくださいと言っても、東北は複数の県で構成されているし、県は無数の市で構成されているので駅員さんは困ってしまいます。この場合だと〇〇県の〇〇市という指定の仕方をすると、この指定は一意なものとなります。

これと同じで、インターネットの情報を一意に指定する仕組みを「URL」と呼びます。Web ブラウザの上のアドレスバーの入力されている文字列が URL になります。

HTTP

URL で情報を指定することにより、インターネットの様々な情報を指定はできます。しかし、まだ取得はできません。情報をどのようのやり取りするかを規定していないからです。情報をやり取りするのは共通のルールが必要になります。

例えば、じゃんけんはチョキがパーに勝つという相互理解の上で成り立っています。ある地域でパーがチョキに勝つというルールだと異なる地域間でジャンケンが成立しなくなる状況が起こり得ます。

これはコンピュータの世界でも同じで、上手く情報をやり取りするにはあらかじめ約束事を決めておき、それに従うことが必要なのです。このように、通信の際に互いが共通の認識のもとに従う約束事を「通信プロトコル」と呼びます。

HTTP とは Web サーバと Web クライアントの間でデータの送受信を行うための通信プロトコルです。

IP アドレス

URL はネットの住所のような役割果たしているという認識は厳密に言うと少し違います。実は Web サイトにアクセスする際に、住所のような役割を果たすのは「IP アドレス」というものになります。

IP アドレスは、104.162.245.XX のような数字で表されます。コンピュータにとって数字が理解しやすいため、IP アドレスは数字を用いていますが、人間にとってはただの数字の羅列に過ぎず、どこにアクセスしているのか理解できません。

ここで、登場するのが「ドメイン」です。ドメインは IP アドレスの数字を人間が理解しやすい文字列に変換します。ドメインはネット上の PC の場所を指していて、URL はホームページの場所を指しています。

ポート番号

コンピュータでできることは多くあり、Web サイトの閲覧、メールの送受信、ファイルの編集など多岐にわたります。IP アドレスをもとに宛先のコンピュータを指定しますが、宛先のコンピュータは受信した情報をどのアプリケーションで処理するかは IP アドレスだけではわかりません。

IP アドレスに加えて「ポート番号」まで指定しないと適切に情報は処理されないのです。ポート番号は数字でプログラムを識別します。例えば、25 はメール送信、80 が Web サイト閲覧など、コンピュータは届いた情報をポート番号によって識別されたプログラムで処理します。

ステートフルとステートレス

ステートレスは状態を持つ、反対にステートレスは状態を持たないという意味です。ここでの状態とはクライアントとサーバ間のやり取りを保持しているかという意味です。

例えば、HTTP はステートレスな通信です。今までのやり取りを保持しないので何回検索しても同じ情報が返ってきます。これは通信が一往復で終了するため、一回一回の通信がそれぞれ独立しているからです。

対して、EC サイトはステートフルな通信を行なっています。商品をカートに入れるとカートの中に商品が入っていますよね?これは直前に行った、商品をカートに入れるというやり取りが保持されたことにより、それに従って画面が変遷するからです。

ステートフルな通信には「Cookie」という技術が採用されています。

EC サイトの通信には「Cookie」という技術が関わっています。

サーバへ接続してきたブラウザに対して、情報と一緒に Cookie のデータを送信します。ブラウザは Cookie を保持し、次回サーバにリクエストを送る際に一緒に Cookie も送信します。サーバは Cookie をもとにユーザーを識別し、以前行った通信を関連させるという仕組みです。

おわりに

以上、最低限の Web 用語を解説させていただきました。

拙い文章だったかと思いますが、どなたかのお役に立てれば幸いです。